iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 18
1
Modern Web

Zero to hero with React.js系列 第 18

【Day18 React】React Flux 架構——Action

  • 分享至 

  • xImage
  •  

今天,要來學習 to-do app 中的 Action

先在 js 資料夾下創建一個 actions 資料夾,裡面新增一個 TodoActions.js
action 裡,我們需要的就是 dispatcher
因此第一行先把 dispather 引入

import dispatcher from "../dispatcher";

建立 createTodo function

ES5 的寫法會是這樣:

export default{
    createTodo: function(){
    
    }
}

而 ES6 的寫法合併成一行,精簡許多:

export function createTodo() {
  
}

當我們新增一個 to-do text 時,我們會把它 dispatch 到一個 action 或 event,在 createTodo 中加上 dispatcher,要傳的屬性值為 text

export function createTodo(text) {
  dispatcher.dispatch({
    type: "CREATE_TODO",
    text,
  });
}

刪除的 function 也是做同樣的事情,type 改成 "DELETE_TODO",傳遞的屬性值為要刪除的 to-do 事件的 id

export function deleteTodo(id) {
  dispatcher.dispatch({
    type: "DELETE_TODO",
    id,
  });
}

Todo component

Todo component 裡 import 剛剛寫的 Action

import * as TodoActions from "../actions/TodoActions";

接著在要渲染的內容裡放上 create button

<button onClick={this.reloadTodos.bind(this)}>Reload!</button>

用 onClick 去綁定 create function

測試綁定 createTodo 結果

createTodo(){
  TodoActions.createTodo(Date.now());
 }


Asynchronous & AJAX action

未完。。。


上一篇
【Day17 React】Flux to-do text
下一篇
【Day19 React】React router 在 Single Page Application(SPA) 的應用
系列文
Zero to hero with React.js30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言